//package com.szamc.tableroundapi.service;
//
//
//import com.szamc.tableroundapi.model.BaseTable.BaseTableFormatData;
//import com.szamc.tableroundapi.model.BaseTable.BaseTableOption;
//
//import lombok.var;
//
//import java.lang.reflect.Field;
//import java.util.ArrayList;
//import java.util.Comparator;
//import java.util.LinkedHashMap;
//import java.util.List;
//import java.util.stream.Collectors;
//
//public class BaseTableRoundService<T> {
//    public List<T> GetRoundTable(List<T> tableList, List<BaseTableOption> baseTableOptions) throws NoSuchFieldException, IllegalAccessException {
//        var forMatDataList = GetForMatDataList(tableList,baseTableOptions);
//        var sum = GetSum(forMatDataList);
//        var floorSum = GetFloorSum(forMatDataList);
//        var addCount = (int) Math.round(sum) - floorSum;
//        forMatDataList.sort(Comparator.comparing(BaseTableFormatData::getDecimalPart).reversed());//排序
//        var addIds = forMatDataList.subList(0,addCount)
//                .stream()
//                .map(BaseTableFormatData::getId)
//                .collect(Collectors.toList());
//        return GetRoundList(tableList,baseTableOptions,addIds);
//    };
//
//    //按字段展开
//    public ArrayList<BaseTableFormatData> GetForMatDataList(List<T> tableList, List<BaseTableOption> baseTableOptions) throws NoSuchFieldException, IllegalAccessException {
//        var tableRows = new ArrayList<BaseTableFormatData>();
//        for(int i=0;i<tableList.size();i++){
//            for (BaseTableOption baseTableOption : baseTableOptions) {
//                if (baseTableOption.getFieldType() != 0) {
//                    var obj = tableList.get(i);
//                    var fieldType = baseTableOption.getFieldType();
//                    Field field = obj.getClass().getDeclaredField(baseTableOption.getFieldName());
//                    field.setAccessible(true);
//                    var _formatData = new BaseTableFormatData(
//                            fieldType==1?(double) field.get(obj):-(double) field.get(obj),
//                            baseTableOption.getFieldName(),
//                            baseTableOption.getFieldType(),
//                            i);
//                    tableRows.add(_formatData);
//                }
//            }
//        }
//        return tableRows;
//    }
//
//
//
//    private String GetTableId(int rowIndex,String fieldName){
//        return rowIndex + "_" + fieldName;
//    }
//
//    //获取所有数字的总和
//    private double GetSum(List<BaseTableFormatData> forMatDataList){
//        double sum = 0;
//        for (BaseTableFormatData item : forMatDataList) {
//             sum += item.getValue();
//        }
//        return sum;
//    }
//
//    //获取所有整数部分的和
//    private int GetFloorSum(List<BaseTableFormatData> forMatDataList){
//        int sum = 0;
//        for (BaseTableFormatData item : forMatDataList) {
//            sum += item.getIntegerPart();
//        }
//        return sum;
//    }
//
//    //给原来的List按条件+1
//    private List<T> GetRoundList(List<T> tableList,List<BaseTableOption> baseTableOptions,List<String> Ids) throws NoSuchFieldException, IllegalAccessException {
//        for(int i=0;i<tableList.size();i++){
//            for (BaseTableOption item : baseTableOptions) {
//                var _id = GetTableId(i,item.getFieldName());
//                var obj = tableList.get(i);
//                Field field = obj.getClass().getField(item.getFieldName());
//                var _oldValue = (double) field.get(obj);
//                var _newValue = (Math.floor(_oldValue));
//                field.setAccessible(true);
//                if (Ids.contains(_id)) {
//                    field.set(obj, _newValue + 1);
//                } else {
//                    field.set(obj, _newValue);
//                }
//            }
//        }
//        return tableList;
//    }
//
//
//
//}
